package com.bawei.es.service;

import com.bawei.common.core.domain.R;
import com.bawei.system.domain.vo.EsDocDelVo;
import com.bawei.system.domain.vo.IndexDetailsVO;

import java.util.List;
import java.util.Map;

public interface EsIndexService {
    R<Boolean> indexCreate(String indexName);

    R<Boolean> indexExit(String indexName);

    R<Boolean> indexDelete(String indexName);

    R<Boolean> indexCreateWithMapping(String indexName, String indexMapping);

    R<Map> indexGetMapping(String indexName);

    /**
     * 添加一个修改索引接口，要可以修改已有的mappings映射，比如增加一个字段、删除一个字段等
     * @param indexName
     * @param mappings
     * @return
     */
    R updateIndex(String indexName, Map<String, Object> mappings);

    /**
     * 根据索引名称、映射结构创建索引
     *在现有的创建索引的接口要加上settings
     * @param vo
     * @return
     */
    R<Boolean> indexCreat(IndexDetailsVO vo);

    R<Map<String, Object>> getMapping(String indexName);


    /**
     * 根据索引名称获取mapping setting
     * @param indexName
     * @return
     */
    IndexDetailsVO get(String indexName);

    /**
     * 根据索引名称修改索引mapping映射
     * @param vo
     * @param flag
     */
    void update(IndexDetailsVO vo, Integer flag);

    /**
     * 根据索引名称、映射结构创建索引
     * @param vo
     */
    void createIndex(IndexDetailsVO vo);

    void create(IndexDetailsVO vo);

    /**
     * 删除相对应的索引
     * @param esDocDelVo
     * @return
     */
    R indexDel(EsDocDelVo esDocDelVo);

    // 查询所有的索引方法
    List<String> selectAllIndexs();
}
